'''
读文件相关的操作
'''
import configparser
import os

import yaml


def get_project_path():
    '''
    获取当前工程路径   os
    :return:
    '''
    cf = os.path.realpath(__file__)  # 当前文件路径 C:\ApiAutoTest49\zonghe\caw\ReadFile.py
    # print("cf", cf)
    cd = os.path.dirname(cf)  # 文件所在的目录  C:\ApiAutoTest49\zonghe\caw\
    # print("cd", cd)
    cd = os.path.dirname(cd)  # 上一级目录 C:\ApiAutoTest49\zonghe\
    # print("cd", cd)
    cd = os.path.dirname(cd)  # 再上一级目录 C:\ApiAutoTest49\
    # print("cd", cd)
    return cd + "\\"


def read_ini(file_path, key):
    '''
    读取ini文件，返回key对应的value
    :param file_path: 文件路径
    :param key: key
    :return: key对应的value
    '''
    cp = configparser.ConfigParser()
    file_path = get_project_path() + file_path
    cp.read(file_path)  # 读配置文件
    v = cp.get('env', key)  # 在[env]中找key
    return v


def read_yaml(file_path):
    '''
    读取yaml文件
    :param file_path: 文件路径
    :return: 文件内容
    '''
    file_path = get_project_path() + file_path
    with open(file_path, encoding='utf-8', mode='r') as f:
        c = f.read()  # 读取所有内容
        return yaml.load(c, Loader=yaml.FullLoader)


# 测试代码，用完删除（类似于单元测试，确保增加的方法/函数功能是正确的）
if __name__ == '__main__':
    # 绝对路径 C:\ApiAutoTest49\
    v = read_ini(r"zonghe\data_env\env.ini", "url")
    print(v)
    v = read_ini(r"zonghe\data_env\env.ini", "db")
    print(v)
    print(type(v))  # <class 'str'>
    a = eval(v)  # 转成字典
    print(a)
    print(type(a))
    c = read_yaml(r"zonghe\data_case\register_fail.yaml")
    print(c)
